//package com.cloud.business.config;
//
//import com.alibaba.nacos.client.naming.utils.CollectionUtils;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.web.cors.CorsConfiguration;
//import org.springframework.web.cors.reactive.CorsWebFilter;
//import org.springframework.web.cors.reactive.UrlBasedCorsConfigurationSource;
//
//import java.util.Arrays;
//import java.util.List;
//
//@Configuration
//public class GlobalCorsConfig {
//    /**
//     * 为了安全，建议只放行需要的地址(可以再yaml中定义进行映射方便扩展)
//     */
//    private List<String> sourceCors = Arrays.asList("*");
//    private List<String> methods = Arrays.asList("GET", "POST", "PUT", "DELETE", "OPTIONS");
//
//    @Bean
//    public CorsWebFilter corsWebFilter() {
//        CorsConfiguration config = new CorsConfiguration();
//        // 放行原始域
//        if (CollectionUtils.isEmpty(sourceCors)) {
//            config.addAllowedOrigin("*"); // 放行所有
//        } else {
//            for (String sourceCor : sourceCors) {
//                config.addAllowedOrigin(sourceCor);
//            }
//        }
//        // 放行请求头
//        if (CollectionUtils.isEmpty(methods)) {
//            config.addAllowedHeader("*"); // 放行所有
//        } else {
//            for (String method : methods) {
//                config.addAllowedHeader(method);
//            }
//        }
//        config.setAllowCredentials(true); // 是否发送cookie
//        config.addAllowedMethod("*"); // 放行请求方式
//        config.addExposedHeader("*"); // 暴露头部信息
//        UrlBasedCorsConfigurationSource source = new UrlBasedCorsConfigurationSource();
//        source.registerCorsConfiguration("/**", config);
//        return new CorsWebFilter(source);
//    }
//}
